package com.example.victory.common.web;

import com.cgws.fintech.sdk.common.exception.GlobalError;
import com.cgws.fintech.sdk.common.exception.GlobalException;
import org.springframework.util.StringUtils;

import java.util.List;

public class ServiceHelper {
    /**
     * 检查数据是否为null，如果是String类型，检查是否为空串，检查不通过时抛参数错误异常
     *
     * @param data 待检查参数
     */
    public static void checkDataNotNull(Object data) {
        if (data == null) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_ERROR);
        } else if (data instanceof String && StringUtils.isEmpty(data)) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_ERROR);
        }
    }

    /**
     * 检查数据是否为null，如果是String类型，检查是否为空串，检查不通过时抛参数错误异常
     *
     * @param data 待检查参数
     * @param name 抛异常时提示的参数名称
     */
    public static void checkDataNotNull(Object data, String name) {
        if (data == null) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_NAME_ERROR, name);
        } else if (data instanceof String && StringUtils.isEmpty(data)) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_NAME_ERROR, name);
        }
    }

    /**
     * 检查队列是否为null或空，检查不通过时抛参数错误异常
     *
     * @param data 待检查参数
     */
    public static void checkList(List data) {
        if (data == null || data.isEmpty()) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_ERROR);
        }
    }

    /**
     * 检查队列是否为null或空，检查不通过时抛参数错误异常
     *
     * @param data 待检查参数
     * @param name 抛异常时提示的参数名称
     */
    public static void checkList(List data, String name) {
        if (data == null || data.isEmpty()) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_NAME_ERROR, name);
        }
    }

    /**
     * 检查字符串是否为空白blank，检查不通过时抛参数错误异常
     *
     * @param str 待检查的参数
     */
    public static void checkStringNotBlank(String str) {
        if (org.apache.commons.lang3.StringUtils.isBlank(str)) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_ERROR);
        }
    }

    /**
     * 检查字符串是否为空白blank，检查不通过时抛参数错误异常
     *
     * @param str  待检查的参数
     * @param name 抛异常时提示的参数名称
     */
    public static void checkStringNotBlank(String str, String name) {
        if (org.apache.commons.lang3.StringUtils.isBlank(str)) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_ERROR, name);
        }
    }

    /**
     * 参数合法性校验
     *
     * @param pass 条件
     * @param name 参数名称
     */
    public static void check(boolean pass, String name) {
        if (!pass) {
            throw new GlobalException(GlobalError.GLOBAL_INPUT_NAME_ERROR, name);
        }
    }
}
